// auth-utils.js （前端JWT认证工具）
function isValidJWT(token) {
    if (!token) return false;
    const parts = token.split('.');
    return parts.length === 3;
}

function isTokenExpired(token) {
    try {
        const payload = JSON.parse(atob(token.split('.')[1]));
        return payload.exp * 1000 < Date.now();
    } catch {
        return true;
    }
}

async function validateTokenOnServer(token) {
    try {
        const response = await http.get('/pms/validate-token', {
            headers: {
                'Authorization': `Bearer ${token}`
            }
        });
        return response.valid === true;
    } catch (error) {
        console.error('服务器验证失败:', error);
        return false;
    }
}

function clearAuthData() {
    localStorage.removeItem('token');
    localStorage.removeItem('user');
}

async function comprehensiveTokenValidation(token) {
    // 1. 基本检查
    if (!token) return false;

    // 2. 格式检查
    if (!isValidJWT(token)) {
        clearAuthData();
        return false;
    }

    // 3. 过期检查（前端）
    if (isTokenExpired(token)) {
        clearAuthData();
        return false;
    }

    // 4. 服务器验证
    const isValid = await validateTokenOnServer(token);
    if (!isValid) {
        clearAuthData();
    }
    return isValid;
}

// 获取当前用户信息
// function getCurrentUser() {
//     const token = localStorage.getItem('token');
//     if (!token) return null;
    
//     try {
//         // 从JWT token中解析用户信息
//         console.log(token);
//         const payload = JSON.parse(atob(token.split('.')[1]));
//         return {
//             user_id: payload.user_id,
//             user_name: payload.user_name,
//             org_code: payload.org_code,
//             user_type: payload.user_type,
//         };
//     } catch (error) {
//         console.error('解析用户信息失败:', error);
//         return null;
//     }
// }
// 获取当前用户信息
function getCurrentUser() {
    const token = localStorage.getItem('token');
    if (!token) return null;
    
    try {
        // 先进行基本格式验证
        if (!isValidJWT(token)) {
            console.warn('Token格式无效');
            return null;
        }
        
        // 使用更安全的Base64解码
        const payloadBase64 = token.split('.')[1];
        // 处理Base64 URL编码（JWT标准）
        const base64 = payloadBase64.replace(/-/g, '+').replace(/_/g, '/');
        const payload = JSON.parse(atob(base64));
        
        return {
            user_id: payload.user_id,
            user_name: payload.user_name,
            org_code: payload.org_code,
            user_type: payload.user_type,
        };
    } catch (error) {
        console.error('解析用户信息失败:', error);
        // 自动清理无效token
        clearAuthData();
        return null;
    }
}


// 导出函数供其他文件使用
window.authUtils = {
    validateToken: comprehensiveTokenValidation,
    clearAuthData,
    isValidJWT,
    getCurrentUser,
    checkUserRoleAndRedirect,
    isAdmin,
    checkPermissionOnLoad, 
};

// 检查用户权限并跳转
function checkUserRoleAndRedirect(user) {
    const userType = user.user_type; // 0:非管理员  1:管理员
    
    // 根据用户类型跳转到不同页面
    if (userType === 1) {
        window.location.href = '/admin';
        return;
    }
    if (userType === 0) {
        window.location.href = '/main';
        return;
    }
}

// 检查用户是否是管理员
function isAdmin() {
    const user = getCurrentUser();
    return user && user.user_type === 1;
}

// 页面加载时检查权限
function checkPermissionOnLoad() {
    const user = getCurrentUser();
    if (!user) return;
    
    // 如果当前在登录页但已登录，根据权限跳转
    if (window.location.pathname === '/' || window.location.pathname === '/login') {
        if (user.user_type === 1) {
            window.location.href = '/admin';
        } else {
            window.location.href = '/main';
        }
    }
    
    // 如果当前在管理页但不是管理员，跳回主页面
    if (window.location.pathname === '/admin' && user.user_type !== 1) {
        window.location.href = '/main';
    }
}

// 页面加载时执行权限检查
document.addEventListener('DOMContentLoaded', function() {
    checkPermissionOnLoad();
});

